// -*- coding: utf-8 -*- 
/**
 * Project: AlgorithmsLearn
 *
 * @author: yanking
 * Create time: 2022-03-06 13:34
 * IDE: IntelliJ IDEA
 * Introduction:
 */
package com.LeetCodeT.TREE;

import com.DataStruct.Tree.TwoBinaryTree.TreeNode;

public class SumOfLeftLeaves {
    /**
     * 获取给定树的所有左叶子之和
     * 使用DFS遍历给定树，判定当前节点是否为左叶子节点
     */
    int ans = 0;

    public int sumOfLeftLeaves(TreeNode root) {
        DFS(root);
        return ans;
    }

    private void DFS(TreeNode root) {
        if (root == null) {
            // 递归结束条件
            return;
        }
        if (root.left != null && root.left.left == null && root.left.right == null) {
            // 当前节点的下一个节点为左叶子节点
            ans += root.left.val;
        }
        if (root.left != null) {
            DFS(root.left);
        }
        if (root.right != null) {
            DFS(root.right);
        }
    }

}
